﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

namespace SOM.Objects
{
  public partial class Wall : SOM.Interfaces.Objects.IWall
  {
    private int wIDs = 0;
    private SOM.Helper.Types.Point3d stpt = new SOM.Helper.Types.Point3d();
    private SOM.Helper.Types.Point3d edpt = new SOM.Helper.Types.Point3d();
    private double wnkl = 0;
    private double brt = 0;
    private double pA_AXIS_OFFSET = 0;

    private double pA_thermal_transmittance = 0;
    private double[] pA_LEAF_AXIS_OFFSET = null;
    private double[] pA_LEAF_CALCULATED_HEIGHT = null;
    private double[] pA_LEAF_HEIGHT = null;
    private double[] pA_LEAF_OFFSET_BOTTOM = null;
    private double[] pA_LEAF_OFFSET_TOP = null;
    private double[] pA_LEAF_WIDTH = null;
    private double[] pA_LEAF_Z_BOTTOM = null;

    private double[] pA_LEAF_Z_TOP = null;
    private int pA_assoc_auto = 0;
    private int pA_CONNECT = 0;
    private int pA_CONSTRUCTION = 0;
    private int pA_NUMBEROF_LEAVES = 0;
    private int pA_priority_end = 0;
    private int pA_priority_start = 0;
    private int pA_SEPARATION = 0;

    private int pA_sound_reduction = 0;
    private int[] pA_LEAF_CALC = null;
    private int[] pA_LEAF_LEVELID_BOTTOM = null;
    private int[] pA_LEAF_LEVELID_TOP = null;
    private int[] pA_LEAF_MATERIAL = null;
    private int[] pA_LEAF_NUM_ENDING_END = null;
    private int[] pA_LEAF_offset_bottom_lock = null;
    private int[] pA_LEAF_offset_top_lock = null;
    private int[] pA_LEAF_PRIORITY = null;
    private int[] pA_LEAF_PRIORITY_end = null;
    private int[] pA_LEAF_PRIORITY_start = null;

    private int[] pA_LEAF_USE_ID = null;
    private string pA_CATEGORY = "";
    private string pA_ELEMENTCODE = "";
    private string pA_ELEMENTDESC = "";
    private string pA_FIRECLASS = "";
    private string pA_PROTOTYPE = "";

    private string pA_USE = "";
    private string[] pA_LEAF_CATEGORY = null;
    private string[] pA_LEAF_DESCRIPTION = null;
    private string[] pA_LEAF_ELEMENTCODE = null;
    private string[] pA_LEAF_MAT_DESCRIPTION = null;

    private string[] pA_LEAF_USE = null;

    private double pLength = 0;

    public double Length
    {
      get { return pLength; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pLength = value;
      }
    }

    public int ID
    {
      get { return wIDs; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");
        }
        wIDs = value;
      }
    }

    private SOM.Helper.Types.Point3d _startPunktWandachse = new SOM.Helper.Types.Point3d();
    [ComVisible(false)]
    public SOM.Helper.Types.Point3d StartPointAxis
    {
      get { return _startPunktWandachse; }
      set { _startPunktWandachse = value; }
    }

    private SOM.Helper.Types.Point3d _endPunktWandachse = new SOM.Helper.Types.Point3d();
    [ComVisible(false)]
    public SOM.Helper.Types.Point3d EndPointAxis
    {
      get { return _endPunktWandachse; }
      set { _endPunktWandachse = value; }
    }

    [ComVisible(false)]
    public SOM.Helper.Types.Point3d StartPointCenter
    {
      get { return stpt; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        stpt = value;
      }
    }
    [ComVisible(false)]
    public SOM.Helper.Types.Point3d EndPointCenter
    {
      get { return edpt; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        edpt = value;
      }
    }
    public double Width
    {
      get { return brt; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        brt = value;
      }
    }
    public double Angle
    {
      get { return wnkl; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        wnkl = value;
      }
    }

    public double A_AXIS_OFFSET
    {

      get { return pA_AXIS_OFFSET; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_AXIS_OFFSET = value;
      }
    }

    public double A_THERMAL_TRANSMITTANCE
    {

      get { return pA_thermal_transmittance; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_thermal_transmittance = value;
      }
    }


    public double[] A_LEAF_AXIS_OFFSET
    {

      get { return pA_LEAF_AXIS_OFFSET; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_LEAF_AXIS_OFFSET = value;
      }
    }


    public double[] A_LEAF_CALCULATED_HEIGHT
    {
      get { return pA_LEAF_CALCULATED_HEIGHT; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_LEAF_CALCULATED_HEIGHT = value;
      }
    }


    public double[] A_LEAF_HEIGHT
    {
      get { return pA_LEAF_HEIGHT; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_LEAF_HEIGHT = value;
      }
    }


    public double[] A_LEAF_OFFSET_BOTTOM
    {
      get { return pA_LEAF_OFFSET_BOTTOM; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_LEAF_OFFSET_BOTTOM = value;
      }
    }


    public double[] A_LEAF_OFFSET_TOP
    {
      get { return pA_LEAF_OFFSET_TOP; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_LEAF_OFFSET_TOP = value;
      }
    }


    public double[] A_LEAF_WIDTH
    {
      get { return pA_LEAF_WIDTH; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_LEAF_WIDTH = value;
      }
    }


    public double[] A_LEAF_Z_BOTTOM
    {
      get { return pA_LEAF_Z_BOTTOM; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_LEAF_Z_BOTTOM = value;
      }
    }


    public double[] A_LEAF_Z_TOP
    {
      get { return pA_LEAF_Z_TOP; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_LEAF_Z_TOP = value;
      }
    }


    public int A_ASSOC_AUTO
    {
      get { return pA_assoc_auto; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_assoc_auto = value;
      }
    }

    public int A_CONNECT
    {
      get { return pA_CONNECT; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_CONNECT = value;
      }
    }

    public int A_CONSTRUCTION
    {
      get { return pA_CONSTRUCTION; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_CONSTRUCTION = value;
      }
    }

    public int A_NUMBEROF_LEAVES
    {
      get { return pA_NUMBEROF_LEAVES; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_NUMBEROF_LEAVES = value;
      }
    }

    public int A_PRIORITY_END
    {
      get { return pA_priority_end; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_priority_end = value;
      }
    }

    public int A_PRIORITY_START
    {
      get
      {

        return pA_priority_start;
      }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");
        }
        pA_priority_start = value;
      }
    }

    public int A_SEPARATION
    {
      get { return pA_SEPARATION; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_SEPARATION = value;
      }
    }

    public int A_SOUND_REDUCTION
    {
      get { return pA_sound_reduction; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_sound_reduction = value;
      }
    }


    public int[] A_LEAF_CALC
    {
      get { return pA_LEAF_CALC; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_LEAF_CALC = value;
      }
    }


    public int[] A_LEAF_LEVELID_BOTTOM
    {
      get { return pA_LEAF_LEVELID_BOTTOM; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_LEAF_LEVELID_BOTTOM = value;
      }
    }


    public int[] A_LEAF_LEVELID_TOP
    {
      get { return pA_LEAF_LEVELID_TOP; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_LEAF_LEVELID_TOP = value;
      }
    }


    public int[] A_LEAF_MATERIAL
    {
      get { return pA_LEAF_MATERIAL; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_LEAF_MATERIAL = value;
      }
    }


    public int[] A_LEAF_NUM_ENDING_END
    {
      get { return pA_LEAF_NUM_ENDING_END; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_LEAF_NUM_ENDING_END = value;
      }
    }


    public int[] A_LEAF_OFFSET_BOTTOM_LOCK
    {
      get { return pA_LEAF_offset_bottom_lock; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_LEAF_offset_bottom_lock = value;
      }
    }


    public int[] A_LEAF_OFFSET_TOP_LOCK
    {
      get { return pA_LEAF_offset_top_lock; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_LEAF_offset_top_lock = value;
      }
    }


    public int[] A_LEAF_PRIORITY
    {
      get { return pA_LEAF_PRIORITY; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_LEAF_PRIORITY = value;
      }
    }


    public int[] A_LEAF_PRIORITY_end
    {
      get { return pA_LEAF_PRIORITY_end; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_LEAF_PRIORITY_end = value;
      }
    }


    public int[] A_LEAF_PRIORITY_start
    {
      get { return pA_LEAF_PRIORITY_start; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_LEAF_PRIORITY_start = value;
      }
    }


    public int[] A_LEAF_USE_ID
    {
      get { return pA_LEAF_USE_ID; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_LEAF_USE_ID = value;
      }
    }


    public string A_CATEGORY
    {
      get { return pA_CATEGORY; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_CATEGORY = value;
      }
    }

    public string A_ELEMENTCODE
    {
      get { return pA_ELEMENTCODE; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_ELEMENTCODE = value;
      }
    }

    public string A_ELEMENTDESC
    {
      get { return pA_ELEMENTDESC; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_ELEMENTDESC = value;
      }
    }

    public string A_FIRECLASS
    {
      get { return pA_FIRECLASS; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_FIRECLASS = value;
      }
    }

    public string A_PROTOTYPE
    {
      get { return pA_PROTOTYPE; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_PROTOTYPE = value;
      }
    }

    public string A_USE
    {
      get { return pA_USE; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_USE = value;
      }
    }


    public string[] A_LEAF_CATEGORY
    {
      get { return pA_LEAF_CATEGORY; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_LEAF_CATEGORY = value;
      }
    }


    public string[] A_LEAF_DESCRIPTION
    {
      get { return pA_LEAF_DESCRIPTION; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_LEAF_DESCRIPTION = value;
      }
    }


    public string[] A_LEAF_ELEMENTCODE
    {
      get { return pA_LEAF_ELEMENTCODE; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_LEAF_ELEMENTCODE = value;
      }
    }


    public string[] A_LEAF_MAT_DESCRIPTION
    {
      get { return pA_LEAF_MAT_DESCRIPTION; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_LEAF_MAT_DESCRIPTION = value;
      }
    }


    public string[] A_LEAF_USE
    {
      get { return pA_LEAF_USE; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        pA_LEAF_USE = value;
      }
    }

    private double[] _A_LEAF_OFFSET = null;


    public double[] A_LEAF_OFFSET
    {
      get { return _A_LEAF_OFFSET; }
      set
      {
        if (_readOnly)
        {
          throw new Exception("You can not change this paramter. Properties are set " + (char)(34) + "ReadOnly" + (char)(34) + "!");

        }
        _A_LEAF_OFFSET = value;
      }
    }
	}
}
